#include <bits/stdc++.h>

#define ll long long
#define ull unsigned long long
#define uint unsigned int

#define YES cout << "YES" << '\n'
#define NO cout << "NO" << '\n'
#define endl '\n'
const int INF = 1e9;
const int MOD = 998244353;
using namespace std;

/*思考
把gcd想成"数字的共同特征" 前后给你两个要求
你现在要选一个人
他和前面的人(pi−1​)相处之后要变成新的关系(𝑝𝑖)
他和后面的人(si+1)相处也要有新的关系 (𝑠𝑖)
为了让他既保留和前面相处的新特点
又保留和后面的新特点
必须有“两个关键特征”(𝑃𝑖​Si​)
但又不能和前后多余的特征冲突 要互质
所以你选的这个人必须是两个关键特征的组合
即(𝑃𝑖*𝑆𝑖)并且不能和前后冲突(互质检查)
*/

void solve() {
    int n;
    cin >> n;
    vector<int> p(n + 1);
    vector<int> s(n + 1);
    for (int i = 1; i <= n; i++) {
        cin >> p[i];
    }
    for (int i = 1; i <= n; i++) {
        cin >> s[i];
    }
    if (p[n] != s[1]) {
        NO;
        return;
    }
    int g = p[n];
    for (int i = 1; i <= n; i++) {
        if (p[i] % g != 0 || s[i] % g != 0) {
            NO;
            return;
        }
        p[i] /= g;
        s[i] /= g;
    }
    for (int i = 2; i <= n; i++) {
        if (p[i - 1] % p[i] != 0) {
            NO;
            return;
        }
        int x = p[i - 1] / p[i];
        if (gcd(x, s[i]) != 1) {
            NO;
            return;
        }
    }
    for (int i = n - 1; i >= 1; i--) {
        if (s[i + 1] % s[i] != 0) {
            NO;
            return;
        }
        int y = s[i + 1] / s[i];
        if (gcd(y, p[i]) != 1) {
            NO;
            return;
        }
    }

    YES;
}

int main() {
    ios::sync_with_stdio(0);
    cin.tie(0);
    int t = 0;
    cin >> t;
    while (t--) solve();
    return 0;
}